本发明公开了一种面向动态场景的测试序列生成方法,包括以下步骤:S1:对系统的测试案例按照不同的动态场景进行分类,形成不同场景的测试案例集;S2:对所述不同场景的测试案例集按照执行的先后顺序进行串联,形成每个场景下的测试子序列;S3:将所述测试子序列按照其入口条件和出口条件进行标准化设计,组合生成能够在测试系统中执行的测试序列。本发明还公开了一种实现上述方法的系统,包括分别用于实现上述三个步骤功能的测试案例分类模块、测试案例串联测试子序列模块和测试子序列组合测试序列模块。本发明适用于具有动态场景的控制系统或者软件系统的测试序列快速生成,提高了测试序列的生成效率和复用程度,确保对系统的全功能覆盖。
1.一种面向动态场景的测试序列生成方法,其特征在于,包括以下步骤:xa0S1:对系统的测试案例按照不同的动态场景进行分类,形成不同场景的测试案例集,具体为:xa0将与系统外部各个接口的连接以及系统内部初始化的内容归类为初始场景;xa0将系统正式运行时依据不同的输入或者处于不同时刻所执行的不同内容归类为过程场景;xa0将系统完成与外部接口的断链以及系统内部信息的保存或删除处理的内容归类为结束场景;xa0S2:对所述不同场景的测试案例集按照执行的先后顺序进行串联,形成每个场景下的测试子序列,具体包括:xa0S21:根据各场景的输入条件,分别确定各场景的标准输入接口信息和输入状态信息,并且依据这些信息,筛选出符合这些接口信息和状态信息的测试案例分别作为各场景中每一条子序列的第一个测试案例;xa0S22:从步骤S21筛选出的测试案例中获取一个未被执行过的测试案例,如果不能获取,则转至步骤S24;如果能够获取,则将该测试案例置为已执行,并转到步骤S23;xa0S23:检验步骤S22获取的测试案例所在的场景中还未被排序测试案例的输入接口信息和输入状态信息是否与本场景子序列的上一个测试案例匹配:xa0如果是,则将与上一个测试案例匹配的测试案例排在该子序列的上一个测试案例之后,然后判断其输出接口信息和输出状态信息是否属于本场景结束条件:如果属于则该测试案例作为本子序列的最后一xa0个测试案例,并执行步骤S22;如果不属于则重新执行步骤S23;xa0如果不是,则重新执行步骤S23的内容;xa0S24:全部场景的测试子序列已经串联完毕;xa0S3:将所述测试子序列按照其入口条件和出口条件进行标准化设计,组合生成能够在测试系统中执行的测试序列。xa0
2.如权利要求1所述的测试序列生成方法,其特征在于,依据系统运行过程的不同,将所述过程场景对应地拆分成多个不同的过程场景。xa0
3.如权利要求1所述的测试序列生成方法,其特征在于,所述步骤S3中将所述测试子序列按照其入口条件和出口条件进行标准化设计具体为:依据不同子序列的入口条件和出口条件,按照标准格式标识出每一条子序列的输入和输出接口以及输入和输出状态信息,供后面生成测试序列使用。xa0
4.如权利要求1或3所述的测试序列生成方法,其特征在于,所述步骤S3中组合生成能够在测试系统中执行的测试序列的步骤具体包括:xa0S31:检查初始场景中是否还有未处理的子序列,如果没有,则说明执行完毕,跳到步骤S34;如果有,则从初始场景包含的未处理子序列中选取一条子序列作为本测试序列的第一条子序列,然后执行步骤S32;xa0S32:从各个过程场景中依次检查是否存在能够与本测试序列中的前一条子序列拼接的子序列,如果有,则将该条子序列加入本测试序列中,并重新执行步骤S32;如果没有,则执行步骤S33;xa0S33:从结束场景中选择一条能够与本测试序列中的最后一个子序列拼接的子序列加入本测试序列中,完成本测试序列的组合,然后回到步骤S31;xa0S34:所有测试序列已生成。xa0
技术领域本发明涉及数据处理技术领域,尤其涉及一种面向动态场景的测试序列生成方法及系统。xa0
背景技术列车运行控制系统或者航空航天系统等相关系统都是按照某些特定的动态场景来实施相应的控制,在不同的场景下控制系统完成的功能以及执行的结果都是不同的。为了保证系统运行安全,对控制系统必须进行全功能的测试,而测试序列的生成是进行系统测试不可避免的一个重要环节。xa0由于这些控制系统在不同的条件下要完成不同的场景功能,因此系统包含的需求条目非常多,想要达到系统级全功能的覆盖测试是非常困难的。目前,通用的测试序列生成方法是通过捕获场景运行数据作为测试序列脚本,然后将该脚本在测试系统中运行,从而对系统进行全功能或者回归测试。xa0目前基于动态场景的测试序列生成没有一套完备的方法,通用的做法是捕获场景运行数据将其作为脚本,然后将该脚本在测试系统中运行。这种方法一方面由于场景运行比较固定,有些比较少见的场景难以捕获,导致测试序列不完备;另外一方面,由于测试序列脚本是以一个整体出现,测试脚本内部前后联系比较紧密,难以提取测试序列脚本中的部分内容进行复用。xa0
发明内容(一)要解决的技术问题xa0本发明要解决的技术问题是:提供一种面向动态场景的测试序列生成方法及系统,该系统和方法适用于具有动态场景的控制系统或者软件系统的测试序列快速生成;利用本系统和方法可以使测试序列的生成模块化和标准化,提高了测试序列的生成效率和复用程度,而且能够确保对系统的全功能覆盖。xa0(二)技术方案xa0为解决上述问题,一方面,本发明提供了一种面向动态场景的测试序列生成方法,包括以下步骤:xa0S1:对系统的测试案例按照不同的动态场景进行分类,形成不同场景的测试案例集;xa0S2:对所述不同场景的测试案例集按照执行的先后顺序进行串联,形成每个场景下的测试子序列;xa0S3:将所述测试子序列按照其入口条件和出口条件进行标准化设计,组合生成能够在测试系统中执行的测试序列。xa0优选地,所述步骤S1中将所述测试案例分成三类:xa0初始场景,对应于系统上电开始一直到运行至一个特定的状态为止,与系统外部各个接口的连接以及系统内部初始化的内容归类为所述初始场景;xa0过程场景,对应于所述初始场景结束后直到结束场景开始前为止,将系统依据不同的输入或者处于不同时刻所执行的不同内容归类为所述过程场景;xa0结束场景,对应于系统正式运行结束后直到系统断电为止,将系统完成与外部接口的断链以及系统内部信息的保存或删除处理的内容归类为所述结束场景。xa0优选地,依据系统运行过程的不同,将所述过程场景对应地拆分成多个不同的过程场景。xa0优选地,步骤S2中对所述不同场景的测试案例集按照执行的先后顺序进行串联,形成每个场景下的测试子序列的步骤具体包括:xa0S21:根据各场景的输入条件,分别确定各场景的标准输入接口信息和输入状态信息,并且依据这些信息,筛选出符合这些接口信息和状态信息的测试案例分别作为各场景中的每一条子序列的第一个测试案例;xa0S22:从步骤S21筛选出的测试案例中获取一个未被执行过的测试案例,如果不能获取,则转至步骤S24;如果能够获取,则将该测试案例置为已执行,并转到步骤S23;xa0S23:检验步骤S22获取的测试案例所在的场景中还未被排序测试案例的输入接口信息和状态信息是否与本场景子序列的上一个测试案例匹配:xa0如果是,则将与上一个测试案例匹配的测试案例排在该子序列的上一个测试案例之后,然后判断其输出接口信息和输出状态信息是否属于本场景结束条件:如果属于则该测试案例作为本子序列的最后一个测试案例,并执行步骤S22;如果不属于则重新执行步骤S23;xa0如果不是,则重新执行步骤S23的内容;xa0S24:全部场景的测试子序列已经串联完毕。xa0优选地,所述步骤S3中将所述测试子序列按照其入口条件和出口条件进行标准化设计具体为:依据不同子序列的入口条件和出口条件,按照标准格式标识出每一条子序列的输入和输出接口以及状态信息,供后面生成测试序列使用。xa0优选地,所述步骤S3中组合生成能够在测试系统中执行的测试序列的步骤具体包括:xa0S31:检查初始场景中是否还有未处理的子序列,如果没有,则说明执行完毕,跳到步骤S34;如果有,则从初始场景包含的未处理子序列中选取一条子序列作为本测试序列的第一条子序列,然后执行步骤S32;xa0S32:从各个过程场景中依次检查是否存在能够与本测试序列中的前一条子序列拼接的子序列,如果有,则将该条子序列加入本测试序列中,并重新执行步骤S32;如果没有,则执行步骤S33;xa0S33:从结束场景中选择一条能够与本测试序列中的最后一个子序列拼接的子序列加入本测试序列中,完成本测试测试序列的组合,然后回到步骤S31;xa0S34:所有测试序列已生成。xa0另一方面,本法还提供了一种实现上述的面向动态场景的测试序列生成方法的系统,包括:xa0测试案例分类模块,用于对系统的测试案例按照不同的动态场景进行分类,形成不同场景的测试案例集;xa0测试案例串联测试子序列模块,用于对所述不同场景的测试案例集按照执行的先后顺序进行串联,形成每个场景下的测试子序列;xa0测试子序列组合测试序列模块,用于将所述测试子序列按照其入口条件和出口条件进行标准化设计,组合生成能够在测试系统中执行的测试序列。xa0(三)有益效果xa0本发明可以快速生成适用于具有动态场景的控制系统或者软件系统的测试序列;并且利用本发明可以使测试序列的生成模块化和标准化,可以依据不同的功能组合出不同的测试序列,提高了测试序列的生成效率和复用程度,而且能够确保对系统的全功能覆盖。xa0
附图说明图1为根据本发明实施例测试序列生成方法步骤的流程图;xa0图2为根据本发明实施例测试序列生成方法步骤2的流程示意图;xa0图3为根据本发明实施例测试序列生成方法步骤3的流程示意图;xa0图4为根据本发明实施例测试序列生成结构图;xa0图5为根据本发明方法应用于列控系统的实施例的测试序列生成结构图;xa0图6为根据本发明实施例利用本发明的测试序列生成系统进行序列生成的示意图。xa0
具体实施方式下面结合附图及实施例对本发明进行详细说明如下。xa0实施例一:xa0如图1和图4所示,一种面向动态场景的测试序列生成方法,包括以下步骤:xa0S1:对系统的测试案例按照不同的动态场景进行分类,形成不同场景的测试案例集;xa0S2:对所述不同场景的测试案例集按照执行的先后顺序进行串联,形成每个场景下的测试子序列;xa0S3:将所述测试子序列按照其入口条件和出口条件进行标准化设计,组合生成能够在测试系统中执行的测试序列。xa0所述步骤S1中将所述测试案例分成三类:xa0初始场景,对应于系统上电开始一直到运行至一个特定的状态为止,与系统外部各个接口的连接以及系统内部初始化的内容归类为所述初始场景;xa0过程场景,对应于所述初始场景结束后直到结束场景开始前为止,将系统依据不同的输入或者处于不同时刻所执行的不同内容归类为所述过程场景;xa0结束场景,对应于系统正式运行结束后直到系统断电为止,将系统完成与外部接口的断链以及系统内部信息的保存或删除处理的内容归类为所述结束场景。xa0依据系统运行过程的不同,将所述过程场景对应地拆分成多个不xa0同的过程场景。xa0如图2所示,步骤S2中对所述不同场景的测试案例集按照执行的先后顺序进行串联,形成每个场景下的测试子序列的步骤具体包括:xa0S21:根据各场景的输入条件,分别确定各场景的标准输入接口信息和输入状态信息,并且依据这些信息,筛选出符合这些接口信息和状态信息的测试案例分别作为各场景中每一条子序列的第一个测试案例;xa0S22:从步骤S21筛选出的测试案例中获取一个未被执行过的测试案例,如果不能获取,则转至步骤S24;如果能够获取,则将该测试案例置为已执行,并转到步骤S23;xa0S23:检验步骤S22获取的测试案例所在的场景中还未被排序测试案例的输入接口信息和状态信息是否与本场景子序列的上一个测试案例匹配:xa0如果是,则将与上一个测试案例匹配的测试案例排在该子序列的上一个测试案例之后,然后判断其输出接口信息和输出状态信息是否属于本场景结束条件:如果属于则该测试案例作为本子序列的最后一个测试案例,并执行步骤S22;如果不属于则重新执行步骤S23;xa0如果不是,则重新执行步骤S23的内容;xa0S24:全部场景的测试子序列已经串联完毕。xa0在步骤S23中,若是有多个还未被排序的测试案例的输入接口信息和状态信息与本场景同一个子序列的上一个测试案例匹配,则每个与上一个测试案例匹配的测试案例分别排在该子序列的上一个测试案例之后,形成与匹配的测试案例数目相同的多个子序列。例如实施例二图5的初始场景中,案例3-5分别与案例2相匹配,因此将案例3-5分别排在案例2之后分别形成子序列1-3。xa0所述步骤S3中将所述测试子序列按照其入口条件和出口条件进行标准化设计具体为:依据不同子序列的入口条件和出口条件,按照标准格式标识出每一条子序列的输入和输出接口以及状态信息,供后面生成测试序列使用。xa0如图3所示,所述步骤S3中组合生成能够在测试系统中执行的测试序列的步骤具体包括:xa0S31:检查初始场景中是否还有未处理的子序列,如果没有,则说明执行完毕,跳到步骤S34;如果有,则从初始场景包含的未处理子序列中选取一条子序列作为本测试序列的第一条子序列,然后执行步骤S32;xa0S32:从各个过程场景中依次检查是否存在能够与本测试序列中的前一条子序列拼接的子序列,如果有,则将该条子序列加入本测试序列中,并重新执行步骤S32;如果没有,则执行步骤S33;xa0S33:从结束场景中选择一条能够与本测试序列中的最后一个子序列拼接的子序列加入本测试序列中,完成本测试测试序列的组合,然后回到步骤S31;xa0S34:所有测试序列已生成。xa0实施例二:xa0如图5所示,以在列控系统应用本发明的方法为例进行说明。xa0本实施例中,测试案例的标准化设计如下面的表一和表二所示:xa0表一xa0
![]()
ntent="drawing" img-format="tif" inline="no" orientation="portrait" wi="700"/>表二xa0
![]()
ntent="drawing" img-format="tif" inline="no" orientation="portrait" wi="700"/>本实施例中,串接测试案例和测试序列的原则为:xa0前一条测试案例或测试子序列内部状态的终止条件和接口的终止条件分别与后一条测试案例或测试子序列的内部状态的起始条件和接口的起始条件严格一致,就可以将两个测试案例或两个测试子序列进行串接。xa0在本实施例中给出了10个测试案例,分别为:xa0案例1:车载设备上电,转为SB(待机)模式;xa0案例2:列车在SB模式下建立无线通信会话;xa0案例3:SB模式下无线通信会话建立成功,转为OS(目视行车)模式;xa0案例4:SB模式下无线通信会话建立成功,转为FS(完全监控)模式;xa0案例5:SB模式下无线通信会话建立成功,转为CO(引导)模式;xa0案例6:列车之前为OS模式,接收到MA,转为FS模式;xa0案例7:列车之前为FS模式,收到新的行车许可信息;xa0案例8:列车之前为CO模式,接收到MA,转为FS模式;xa0案例9:列车由其他模式转为SB后,无线通信会话断开;xa0案例10:列车结束通信会话后断电。xa0上述10个测试案例的测试序列生成步骤具体为:xa0第一步:依据上述测试案例的标准化设计格式,依据车载设备规范,将符合起始条件/终止条件的一类测试案例划分到某个场景下:xa0如图5中,案例1到案例5的起始条件都为列车模式SB模式+列车接口为任意一种状态;而终止条件都为列车模式任意一种模式+无线通信状态为建立+列车接口为上电,这些测试案例符合初始场景入口条件和出口条件,因此划为初始场景。xa0案例6到案例8的起始条件都为列车模式非SB的其他任意模式+无线通信状态为建立+列车接口为上电,而终止条件都为列车模式FS模式+无线通信状态为建立+列车接口为上电,这些测试案例符合行车许可授权场景的入口条件和出口条件,可以划分为行车许可授权场景。xa0案例9和案例10的起始条件都为为列车模式为任意一种模式+无线通信状态为建立+列车接口为上电,而终止条件都为列车模式SB模式+无线通信状态为断开+列车接口为断电,将这些测试案例符合结束场景的入口条件和出口条件,归为结束场景。xa0第二步:将各个场景下的测试案例串联为测试子序列,每个子序列的入口条件和出口条件与其所在场景的约束一致:xa0在初始场景中,案例1的起始条件为列车模式SB模式+无线通信状态为断开+列车接口为断电,终止条件为列车模式SB模式+无线通信状态为断开+列车接口为上电;案例2的起始条件为列车模式SB模式+无线通信状态为断开+列车接口为上电,终止条件为列车模式SB模式+无线通信状态为已建立+列车接口为上电;案例3至案例5的初始条件为列车模式SB模式+无线通信状态为建立+列车接口为上电,终止条件为列车模式非SB的其他任意模式+无线通信状态为建立+列车接口为上电;因此,本初始场景可自动串联为三条子序列,案例1、案例2和案例3依次串联形成本场景的子序列1;案例1、案例2和案例4依次串联形成本场景的子序列2;案例1、案例2和案例5依次串联形成本场景的子序列3;xa0在行车许可授权场景中,案例6至案例8的起始条件和终止条件xa0分别与本场景的起始条件和终止条件一致,因此案例6至案例8分别对应本场景的子序列1至子序列3。xa0在结束场景中,案例9的终止条件与案例10的起始条件对应,因此将案例9和案例10串联为结束场景的子序列1。xa0第三步,根据场景的入口条件和出口条件,将各个场景的子序列串联组合成测试序列:xa0初始场景-子序列1的入口条件为列车模式SB模式+无线通信状态为断开+列车接口为断电,出口条件为列车模式OS模式+无线通信状态为建立+列车接口为上电;行车许可授权场景-子序列1的入口条件为列车模式OS模式+无线通信状态为建立+列车接口为上电,终止条件为列车模式FS模式+无线通信状态为建立+列车接口为上电;结束场景-子序列1的入口条件为列车模式任意一种模式+无线通信状态为建立+列车接口为上电,终止条件为列车模式SB模式+无线通信状态为断开+列车接口为断电;因此,系统将自动将初始场景-子序列1、行车许可授权场景-子序列3和结束场景子序列1串联成一条完整的测试序列1。xa0同样本实施例将初始场景-子序列2、行车许可授权场景-子序列2和结束场景-子序列1串联成一条完成的测试序列2;将初始场景-子序列3、行车许可授权场景-子序列1和结束场景-子序列1串联成一条完成的测试序列3。xa0经过上述方法,对列控系统中的各测试案例生成多个测试序列,以供后续使用。xa0实施例三:xa0一种实现上述的面向动态场景的测试序列生成方法的系统,包括:xa0测试案例分类模块,用于对系统的测试案例按照不同的动态场景进行分类,形成不同场景的测试案例集;xa0测试案例串联测试子序列模块,用于对所述不同场景的测试案例集按照执行的先后顺序进行串联,形成每个场景下的测试子序列;xa0测试子序列组合测试序列模块,用于将所述测试子序列按照其入口条件和出口条件进行标准化设计,组合生成能够在测试系统中执行的测试序列。xa0如图6所示,利用本实施例的系统,可以依次对测试案例进行分类、串联和组合,生成用于系统测试的测试序列。xa0本系统可以依据关键状态以及关键字将不同的测试案例按照系统运行场景自动分类成各场景下的测试案例集;然后,在每个场景下的测试案例集中,根据测试案例的功能以及其在场景中的执行顺序,将这些测试案例进行自动串联,组成每种不同场景下的测试子序列,并且本系统将每条子序列的输入和输出条件依据标准化的接口定义格式对其进行详细定义;最后,将不同测试场景下的子序列依据接口进行自动组合,形成多条可用于系统测试的测试序列。而且,人工可以根据需要将不同场景下的子序列进行组合,形成新的测试序列。xa0以上实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。xa0